<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // filter  对数组进行过滤。创建一个新的数组，新数组中的元素是通过检查指定数组中符合条件的所有元素。
        // --------------原生方法-------------------------------------------
        var arr = [1,1,2,3,46,5,8];
        var res = arr.filter(function(item,index,arr){
            return item >6
        })
        console.log(res);
        // --------------用for底层来写-------------------------------------------
        // var arr = [1,1,2,3,46,5,8];
        function maFilter(arr,fn){
            var result = [];
            for(var i = 0 ; i< arr.length ; i++){
                var res = fn(arr[i],i,arr) === true ? result.push(arr[i]) : '' ; 
                // result.push(arr[i])满足条件就添加值
                // res === true ? result[i] = arr[i] : '' ;  
                // 不能这样写 比如 i=4满足条件 result[4] = arr[4] 前面 4项就为空 占位
            }
            return result;
        }
        var res = maFilter(arr,function(item,index,arr){
            return item > 6;   // 判断是否满足条件  布尔值
        })
        console.log(res);

        // -----------挂在到原型上------------------------------------------
        // var arr = [1,1,2,3,46,5,8];
        
        Array.prototype.maFilter= function (cb){  // cb 回调函数的意思
            var result = [];
            for(var i = 0 ; i< this.length ; i++){
                var res = cb(this[i],i,this) === true ? result.push(this[i]) : '' ; 
                // result.push(arr[i])满足条件就添加值
                // res === true ? result[i] = arr[i] : '' ;  
                // 不能这样写 比如 i=4满足条件 result[4] = arr[4] 前面 4项就为空 占位
            }
            return result;
        }
        var res = arr.maFilter(function(item,index,arr){
            return item > 6;
        })
        console.log(res);
    </script>
</body>
</html>